import wx
import re
import sys
import time

from solo import *
from reseauWx import *
from reseauConsole import *
from client import *
import socket, thread, threading


#Gestion de la premiere fenetre pour le choix du type de partie
class BeginFrame(wx.Frame):
    def __init__(self, parent, ID, title, pos=wx.DefaultPosition,size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE):	
        wx.Frame.__init__(self, parent, ID, title, pos, size, style)
        
        self.SetAutoLayout(True)

        NewGame = wx.Button(self,1,"Partie en Solo",(10,10),(150,100))
        PlayGame = wx.Button(self,2,"Parties en Reseau",(180,10),(150,100))
        Quit =wx.Button(self,3,"Quitter",(10,120),(320,50))
       
        self.Bind(wx.EVT_BUTTON,self.fnewgame, id=1)
        self.Bind(wx.EVT_BUTTON,self.fjoingame, id=2)
        self.Bind(wx.EVT_BUTTON,self.fquit, id=3)


    def fnewgame(self,evt):#si le joueur choisi de faire une partie en solo
        game = GameSoloFrame(None, -1, "Demineur en Solo", size=(600, 665),style = wx.DEFAULT_FRAME_STYLE)#fenetre de jeu en solo
        game.Show(True)

    def fjoingame(self, evt):#si le joueur choisi de rejoindre des parties en reseau
        #demande du joueur s'il preferre une sortie console ou graphique
        msg=wx.MessageDialog(self,"\n Preferez-vous une sortie Console a une sortie graphique via wxPython ?","Information",wx.YES_NO)
        rep=msg.ShowModal()
        msg.Destroy()
        if rep==5103:#s'il souhaite une sortie console
            game=Console(self)
        else:#s'il preferre une sortie graphique
            game = GameReseauFrame(self, -1, "Demineur en Reseau", size=(900,665),style = wx.DEFAULT_FRAME_STYLE)#fenetre de jeu en reseau
            game.Show(True)
        game.initialisationClient(port,host)#initialisation du client

    def fquit(self,evt) :
        self.Destroy()




#Classe de Base	
class GameApp(wx.App):
    def OnInit(self):
        win= BeginFrame(None,-1,"Demarrage",size = (340,180),style = wx.DEFAULT_FRAME_STYLE)#lancement de la fenetre d'accueil
        self.SetTopWindow(win)
        win.Show(True)
        return True


import sys

#par defaut
host = 'localhost'
port = 4000

#si parametres passes en commande pour le port ou l'hote
if len(sys.argv)<2:
     print "default listen port : %d"%port
     print "default localhost : %s"%host
elif len(sys.argv)==2:
    if len(sys.argv[1])>5:
        host = sys.argv[1]
        print "localhost given : %s"%host
    else:       
        port = int(sys.argv[1])
        print "listened port : %d"%port
else:
    if len(sys.argv[1])>len(sys.argv[2]):
        host = sys.argv[1]
        port = int(sys.argv[2])
    else:
        host = sys.argv[2]
        port = int(sys.argv[1])
    
    print "localhost given: %s"%host
    print "listened port: %d"%port


#lancement de l'application
app1=GameApp()
app1.MainLoop()
app1.Destroy()
